package com.dadao.mall.lambdademo;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

/**
 *
 * https://www.jianshu.com/p/6f724b073f3c
 * Consumer接口也是个函数式接口，
 * 只有该接口只含有一个未实现的accept(T t)方法。
 * 返回值是void，用于封装在日常生活中没有返回值情况的代码，
 * 比如遍历一个集合并且打印每个元素，
 * 我们即可通过Consumer接口实现一个forEach方法。
 * 接收一个集合并且使用Lambda书写需要对集合的操作，
 * 在Consumer参数中即可拿到每一个集合中的元素进行操作。
 *
 */
public class ConsumerLearn {

    public static void main(String[] args) {
        List<Cat> catList = new ArrayList();
        for (int i = 1; i < 30; i++) {
            Cat p = new Cat(i % 2 == 1, i + 5);
            catList.add(p);
        }
        System.out.println("遍历所有元素");
        ConsumerLearn.forEach(catList,c->System.out.println(c.toString()));
    }


    public static void forEach(List<Cat> catList, Consumer<Cat> fun){
        for (Cat c : catList){
            fun.accept(c);
        }
    }
}
